// pages/buy/buy.js
const { baseUrl } = require('../../globalData.js')
Page({
    /**
     * 页面的初始数据
     */
    data: {
        baseUrl,
        recommendList: [],
        userAddress: {},
        // 购物清单列表显示
        buyListIsShow: false,
        buyList: [],
        // 结算栏
        totalPrice: 0,
        totalNum: 0,
        allSelected: true
    },
    // 获取收货地址
    getAddress() {
        wx.chooseAddress({
            success: (result) => {
                // console.log(result)
                // 为防止地址重复获取直接存储在本地
                wx.setStorageSync('userAddr', result)
            },
            fail: () => { },
            complete: () => { }
        });
    },
    // 获取推荐商品
    getRecommendGoods() {
        wx.request({
            url: baseUrl + '/recommendGoods',
            //	请求成功回调
            success: (res) => {
                this.setData({
                    recommendList: res.data.data
                })
            },
        });
    },
    // 修改购物车商品个数
    changeNum(e) {
        const n = parseInt(e.currentTarget.dataset.num)
        const goodsId = parseInt(e.currentTarget.dataset.id)
        const arr = this.data.buyList
        // 获取商品在数组中的位置
        const index = arr.findIndex(item => {
            return item.id === goodsId
        })
        // 修改数量和总价
        arr[index].num += n
        if (arr[index].num < 1) {
            arr[index].num = 1
            return false
        }
        arr[index].pay = arr[index].num * arr[index].goods_price
        this.setData({
            buyList: arr
        })
        // 计算商品总价格
        this.getTotalPay()
        wx.setStorageSync('cartList', arr)
    },
    // 计算购物车的总价格，件数，勾选状态
    getTotalPay() {
        const arr = this.data.buyList
        let totalPrice = 0
        let totalNum = 0
        arr.forEach(item => {
            if (item.isSelected) {
                totalPrice += item.pay
                totalNum += item.num
            }
        })
        // 判断有没有全勾选
        const status = arr.every(item => {
            return item.isSelected === true
        })
        console.log(status);
        this.setData({
            totalPrice,
            totalNum,
            allSelected: status
        })
    },
    // 全选按钮
    allSelecting() {
        let arr = this.data.buyList
        let status = this.data.allSelected // true
        if (status) {
            arr.forEach(item => {
                item.isSelected = false
            })
        } else {
            arr.forEach(item => {
                item.isSelected = true
            })
        }
        status = !status
        this.setData({
            buyList: arr,
            allSelected: status
        })
        this.getTotalPay()
        wx.setStorageSync('cartList', arr)
    },
    // 修改个别商品的勾选状态
    changeSelected(e) {
        const goodsId = parseInt(e.currentTarget.dataset.id)
        const arr = this.data.buyList
        // 获取商品在数组中的位置
        const index = arr.findIndex(item => {
            return item.id === goodsId
        })
        // 修改状态
        arr[index].isSelected = !arr[index].isSelected
        this.setData({
            buyList: arr
        })
        this.getTotalPay()
        wx.setStorageSync('cartList', arr)
    },
    // 删除单个商品
    deleteGoods(e) {
        wx.showModal({
            title: '提示',
            content: '是否删除该商品',
            success: (res) => {
                if (res.confirm) {
                    const goodsId = parseInt(e.currentTarget.dataset.id)
                    console.log(goodsId);
                    const arr = this.data.buyList
                    const index = arr.findIndex(item => {
                        return item.id === goodsId
                    })
                    console.log(index);
                    // 删除
                    arr.splice(index, 1)
                    this.setData({
                        buyList: arr
                    })
                    this.getTotalPay()
                    wx.setStorageSync('cartList', arr)
                } else {
                    return false
                }
            }
        })
    },
    // 去支付
    goPay() {
        if (!this.data.userAddress.userName) {
            wx.showToast({
                title: '请绑定用户地址',
                icon: 'none',
                duration: 2000
            })
            return false
        }
        if (this.data.totalNum === 0) {
            wx.showToast({
                title: '没有商品不可支付',
                icon: 'none',
                duration: 2000
            })
            return false
        }
        // 判断有没有登录
        const userInfo = wx.getStorageSync('userInfo')
        if (!userInfo.nickName) {
            wx.showToast({
                title: '请先登录',
                icon: 'error',
                duration: 2000
            })
            return false
        }
        wx.navigateTo({
            url: '/pages/order/index',
        })
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {

    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        // 用户地址暂存
        const userAddress = wx.getStorageSync('userAddr')
        this.setData({
            userAddress,
            // 默认全选中
            allSelected: true
        })
        // 判断购物车状态
        const buyList = wx.getStorageSync('cartList') || []
        if (buyList.length) {
            this.setData({
                buyListIsShow: true,
                buyList
            })
        } else {
            this.setData({
                buyListIsShow: false
            })
        }
        // 计算商品总价格
        this.getTotalPay()
        // 刷新推荐商品
        this.getRecommendGoods()
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})